// 省市区数据
const provinces = ['北京市', '上海市', '广东省', '湖南省'];
const cities = {
    '北京市': ['北京市'],
    '上海市': ['上海市'],
    '广东省': ['广州市', '深圳市', '珠海市', '汕头市', '佛山市', '韶关市', '湛江市', '肇庆市', '江门市', '茂名市', '惠州市', '梅州市', '汕尾市', '河源市', '阳江市', '清远市', '东莞市', '中山市', '潮州市', '揭阳市', '云浮市'],
    '湖南省': ['长沙市', '株洲市', '湘潭市', '衡阳市', '邵阳市', '岳阳市', '常德市', '张家界市', '益阳市', '郴州市', '永州市', '怀化市', '娄底市', '湘西土家族苗族自治州']
};
const districts = {
    '长沙市': ['芙蓉区', '天心区', '岳麓区', '开福区', '雨花区', '望城区', '长沙县', '浏阳市', '宁乡市'],
    '广州市': ['越秀区', '海珠区', '荔湾区', '天河区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '从化区', '增城区'],
    '深圳市': ['福田区', '罗湖区', '南山区', '宝安区', '龙岗区', '盐田区', '龙华区', '坪山区', '光明区'],
    '北京市': ['东城区', '西城区', '朝阳区', '丰台区', '石景山区', '海淀区', '顺义区', '通州区', '大兴区', '房山区', '门头沟区', '昌平区', '平谷区', '密云区', '怀柔区', '延庆区'],
    '上海市': ['黄浦区', '徐汇区', '长宁区', '静安区', '普陀区', '虹口区', '杨浦区', '闵行区', '宝山区', '嘉定区', '浦东新区', '金山区', '松江区', '青浦区', '奉贤区', '崇明区']
};

// 初始化省市区选择器
function initRegionSelect() {
    // 填充省份数据
    const $province = $('#province');
    $province.empty().append('<option value="">请选择省份</option>');
    provinces.forEach(province => {
        $province.append('<option value="' + province + '">' + province + '</option>');
    });

    // 省份改变时更新城市
    $province.change(function() {
        const province = $(this).val();
        const $city = $('#city');
        const $district = $('#district');

        $city.empty().append('<option value="">请选择城市</option>');
        $district.empty().append('<option value="">请选择区县</option>');

        if (province && cities[province]) {
            cities[province].forEach(city => {
                $city.append('<option value="' + city + '">' + city + '</option>');
            });

            // 如果是直辖市，自动选择城市
            if (province === '北京市' || province === '上海市') {
                $city.val(province);
                $city.trigger('change');
            }
        }
    });

    // 城市改变时更新区县
    $('#city').change(function() {
        const city = $(this).val();
        const $district = $('#district');

        $district.empty().append('<option value="">请选择区县</option>');

        if (city && districts[city]) {
            districts[city].forEach(district => {
                $district.append('<option value="' + district + '">' + district + '</option>');
            });
        }
    });
}

// 加载地址数据
function loadLocationInfo(id) {
    $.ajax({
        url: 'editLocation',
        method: 'POST',
        data: { id: id },
        dataType: 'json',
        success: function(data) {
            if (data) {
                fillLocationForm(data);
            } else {
                alert('未获取到数据');
            }
        },
        error: function(xhr, status, error) {
            console.error("加载数据失败:", error);
            alert('加载数据失败：' + error);
        }
    });
}

// 填充表单数据
function fillLocationForm(data) {
    // 填充基本信息
    $('#locationId').val(data.id);
    $('input[name="receiverName"]').val(data.receiverName);
    $('input[name="mobilePhone"]').val(data.mobilePhone);
    $('input[name="areaCode"]').val(data.areaCode);
    $('input[name="phoneNumber"]').val(data.phoneNumber);
    $('input[name="extension"]').val(data.extension);
    $('input[name="streetAddress"]').val(data.streetAddress);
    $('input[name="postalCode"]').val(data.postalCode);

    // 设置省市区选择器的值
    if (data.province) {
        $('#province').val(data.province);
        $('#province').trigger('change');

        setTimeout(() => {
            if (data.city) {
                $('#city').val(data.city);
                $('#city').trigger('change');

                setTimeout(() => {
                    if (data.district) {
                        $('#district').val(data.district);
                    }
                }, 100);
            }
        }, 100);
    }
}

// 验证固定电话格式
function validateFixedPhone(areaCode, phoneNumber) {
    if (areaCode && !/^\d{3,4}$/.test(areaCode)) {
        alert('区号格式不正确（3-4位数字）');
        return false;
    }
    if (phoneNumber && !/^\d{7,8}$/.test(phoneNumber)) {
        alert('电话号码格式不正确（7-8位数字）');
        return false;
    }
    return true;
}

// 表单验证
function validateForm() {
    const requiredFields = {
        'receiverName': '收件人',
        'mobilePhone': '手机号码',
        'province': '省份',
        'city': '城市',
        'district': '区县',
        'streetAddress': '详细地址'
    };

    for (let [field, label] of Object.entries(requiredFields)) {
        const value = $(`input[name="${field}"]`).val() || $(`#${field}`).val();
        if (!value || value.trim() === '') {
            alert('请填写' + label);
            return false;
        }
    }

    // 验证手机号格式
    const phone = $('input[name="mobilePhone"]').val().trim();
    if (!/^1[3-9]\d{9}$/.test(phone)) {
        alert('请输入正确的手机号码');
        return false;
    }

    // 验证固定电话格式（如果填写了的话）
    const areaCode = $('input[name="areaCode"]').val().trim();
    const phoneNumber = $('input[name="phoneNumber"]').val().trim();
    if ((areaCode || phoneNumber) && !validateFixedPhone(areaCode, phoneNumber)) {
        return false;
    }

    return true;
}

// 保存地址信息
function saveLocationInfo() {
    if (!validateForm()) {
        return;
    }

    const formData = {
        id: $('#locationId').val(),
        receiverName: $('input[name="receiverName"]').val().trim(),
        mobilePhone: $('input[name="mobilePhone"]').val().trim(),
        areaCode: $('input[name="areaCode"]').val().trim(),
        phoneNumber: $('input[name="phoneNumber"]').val().trim(),
        extension: $('input[name="extension"]').val().trim(),
        province: $('#province').val(),
        city: $('#city').val(),
        district: $('#district').val(),
        streetAddress: $('input[name="streetAddress"]').val().trim(),
        postalCode: $('input[name="postalCode"]').val().trim()
    };

    $.ajax({
        url: 'updateLocation',
        method: 'POST',
        data: formData,
        dataType: 'json',
        success: function(response) {
            if (response.success) {
                alert('保存成功');
                window.location.href = 'My_fellow_traveler.jsp#mailing-address';
            } else {
                alert(response.message || '保存失败');
            }
        },
        error: function(xhr, status, error) {
            console.error("保存失败:", error);
            alert('保存失败：' + error);
        }
    });
}

// 页面加载完成后执行
$(function() {
    // 初始化省市区选择器
    initRegionSelect();

    // 获取URL中的地址ID
    const urlParams = new URLSearchParams(window.location.search);
    const locationId = urlParams.get('id');

    if (locationId) {
        loadLocationInfo(locationId);
    }

    // 表单提交处理
    $('#editAddressForm').on('submit', function(e) {
        e.preventDefault();
        saveLocationInfo();
    });

    // 添加手机号输入验证
    $('input[name="mobilePhone"]').on('input', function() {
        const phone = $(this).val().trim();
        if (phone && !/^1[3-9]\d{9}$/.test(phone)) {
            $(this).addClass('error');
        } else {
            $(this).removeClass('error');
        }
    });

    // 添加固定电话输入验证
    $('input[name="areaCode"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,4}$/.test(value)) {
            $(this).addClass('error');
        } else {
            $(this).removeClass('error');
        }
    });

    $('input[name="phoneNumber"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,8}$/.test(value)) {
            $(this).addClass('error');
        } else {
            $(this).removeClass('error');
        }
    });

    $('input[name="extension"]').on('input', function() {
        const value = $(this).val().trim();
        if (value && !/^\d{0,4}$/.test(value)) {
            $(this).addClass('error');
        } else {
            $(this).removeClass('error');
        }
    });
});